const readline = require('readline');
const fs = require('fs');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
  prompt: '第二关，请输入口令：'
})
rl.question('第一关，你是谁？', (answer) => {
  console.log(`你是 ${answer}`);
  rl.prompt();
});

rl.on('line', (inputStr) => {
  switch (inputStr.trim()) {
    case 'hello':
      console.log('world')
      rl.setPrompt('第三关，请再输入口令：')
      break;
    case 'close':
        rl.close();      //会进入on('close'）
        //process.exit(0); // 立即结束，不会进入on('close'）
      break;
    case 'pause':
        rl.pause();
      break;
    case 'clear':
      // 模拟 Ctrl+l  Clear screen
      rl.write(null, { ctrl: true, name: 'l' });
      break;
    case 'last':
      // 模拟 Ctrl+p  Previous history item
      rl.write(null, { ctrl: true, name: 'p' });  //所有的TTY命令  http://nodejs.cn/api/readline.html#readline_tty_keybindings
      break;
    case 'ins':
      rl.write('instagram'); //直接输入一个text, 可以用来做短句提示
      break;
    case 'instagram':
      console.log('Instagram（照片墙）是一款运行在移动端上的社交应用，以一种快速、美妙和有趣的方式将你随时抓拍下的图片彼此分享。');
      break;
    case 'read':
      rl.setPrompt('')
      processLineByLine();
      setTimeout(() => {
        rl.setPrompt('再来一次，说吧:');
        rl.prompt();
      }, 10);
      break;
    default:
      console.log(`你输入的是：'${inputStr.trim()}'`);
      break;
  }
  rl.prompt();
}).on('close', () => {
  console.log('\n再见!');
  process.exit(0); //必须这样才会结束
})

rl.on('SIGINT', () => { // cmd+C
  rl.question('确定要退出吗？', (answer) => {
    if (answer.match(/^y(es)?$/i)) rl.pause();
  });
});

rl.on('SIGCONT', () => {
  console.log('\ncmd+Z');
});


function processLineByLine() {
  const rl2 = readline.createInterface({
    input: fs.createReadStream('demo11.txt'),
    crlfDelay: Infinity
  });
  // 注意：我们使用 crlfDelay 选项将 input.txt 中的所有 CR LF 实例（'\r\n'）识别为单个换行符。
  rl2.on('line', (line) => {
    console.log(`${line}`);
  });
}